const path = require('path')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
// 拼接路径
function resolve(dir) {
  return path.join(__dirname, dir)
}
module.exports = {
  css: {
    loaderOptions: {
      sass: {
        prependData: `@import "~@/assets/scss/base.scss";`, // 引入全局变量
        // 解决图标乱码问题
        implementation: require('sass'),
        sassOptions: {
          // 生效代码
          outputStyle: 'expanded'
        }
      }
      /*    postcss: {
        plugins: [
          require('postcss-pxtorem')({
            // 把px单位换算成rem单位
            rootValue: 32, // 换算的基数(设计图750的根字体为32)
            selectorBlackList: ['.van', '.el', '.moblie-cont'], // 要忽略的选择器并保留为px。
            propList: ['*']
          })
        ]
      } */
    }
  },
  // 配置@路径
  chainWebpack: config => {
    config.resolve.alias.set('@', resolve('src')).set('@common', resolve('src/common'))
  },
  outputDir: 'dist',
  /* 输出文件目录：在npm run build时，生成文件的目录名称，目标目录在构建之前会被清除 */
  assetsDir: 'assets',
  /* 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录 */
  productionSourceMap: false,
  /* 是否在构建生产包时生成 sourceMap 文件，false将提高构建速度 */
  filenameHashing: true,
  /* 默认为true，生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存，通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) */
  lintOnSave: true,
  /* 代码保存时进行eslint检测 */
  devServer: {
    /* webpack-dev-server 相关配置 */
    open: true,
    /* 自动打开浏览器 */
    /* 设置为0.0.0.0则所有的地址均能访问 */
    port: 8000,
    https: false,
    hotOnly: false,
    proxy: {
      // 中台
      '/ly-code-auth-servicer': {
        // target: 'http://192.168.233.5:7064',
        target: 'http://owtest.lingyugroup.com/ly-code-auth-servicer/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-code-auth-servicer': ''
        } /* 路径重写*/
      },
      // 中台
      '/ly-code-admin-servicer': {
        // target: 'http://192.168.233.5:7065',
        target: 'http://owtest.lingyugroup.com/ly-code-admin-servicer/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-code-admin-servicer': '/'
        } /* 路径重写*/
      },
      // 7001-tms
      '/ly-tms-servicer': {
        // target: 'http://192.168.233.5:7061',
        target: 'http://owtest.lingyugroup.com/ly-tms-servicer/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-tms-servicer': '/'
        } /* 路径重写*/
      },
      // 7002-oms
      '/ly-oms-servicer': {
        // target: 'http://192.168.233.5:7062',
        // target: 'http://192.168.11.102:17062',
        // changeOrigin: false,
        target: 'http://owtest.lingyugroup.com/ly-oms-servicer/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-oms-servicer': '/'
        } /* 路径重写*/
      },
      // 7002-oms
      // '/ly-oms-servicer': {
      //   // target: 'http://192.168.233.5:7062',
      //   target: 'http://192.168.239.94:7062',
      //   // target: 'http://owtest.lingyugroup.com/ly-oms-servicer/',
      //   changeOrigin: false,
      //   pathRewrite: {
      //     '^/ly-oms-servicer': '/'
      //   } /* 路径重写*/
      // },
      '/ly-wms-servicer': {
        // target: 'http://192.168.11.18:7063',
        target: 'http://owtest.lingyugroup.com/ly-wms-servicer/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-wms-servicer': '/'
        } /* 路径重写*/
      },
      '/ly-jx-servicer': {
        // target: 'http://192.168.11.18:7063',
        target: 'http://owtest.lingyugroup.com/ly-jx-servicer/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-jx-servicer': '/'
        } /* 路径重写*/
      },
      // mock数据
      '/ly-oms-mock': {
        target: 'https://mock.apifox.cn/m1/3349368-0-default/',
        changeOrigin: true,
        pathRewrite: {
          '^/ly-oms-mock': '/'
        } /* 路径重写*/
      }
    }
  },
  // 修改默认路径
  publicPath: process.env.NODE_ENV === 'production' ? '/ly-jx-pcr/' : '/',
  configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      // 为生产环境修改配置
      config.optimization.minimizer.push(
        new UglifyJsPlugin({
          uglifyOptions: {
            compress: {
              drop_console: true, // 在UglifyJs删除没有用到的代码时不输出警告
              drop_debugger: true, // 删除debugger语句
              pure_funcs: ['console.log'] // 删除所有console.log
            }
          },
          sourceMap: false,
          parallel: true
        })
      )
    } else {
      return {
        // external: {
        //   AMap: 'AMap',
        //   AMapUI: 'AMapUI'
        // }
        devtool: 'source-map'
      }
    }
  }
}
